﻿#ifndef __SS_BO_BIND_H__
#define __SS_BO_BIND_H__
#include "ssBO.h"

namespace StarSeeker
{

//基类
class ssVBOBind
{  
public:
	bool Create(const void* pData, u32 size, u32 usage = SS_VBO_STATIC);
	bool CreateFloat(const ssfloat* pData, u32 count, u32 usage = SS_VBO_STATIC);
	void Use() { m_vbo.Use(); }
	void Nonuse() { m_vbo.Nonuse(); }

	ssVBO	m_vbo;
};

//索引数据
class ssIBOBind
{
public:
	ssIBOBind();

	bool Create8(const u8* pData, u32 count);
	bool Create16(const u16* pData, u32 count);
	bool Create32(const u32* pData, u32 count);
	bool Create(u32 bitType, const void* pData, u32 count);
	void Use() { m_ibo.Use(); }
	void Nonuse() { m_ibo.Nonuse(); }

	u32		m_indexCount;
	ssIBO	m_ibo;
	u32		m_bitType;
};

#ifndef SS_USE_GLES2
//纹理数据
class ssPBOBind
{
public:
	//ssPBOBind();
	bool Create(const void* pData, u32 size, u32 usage=GL_STREAM_DRAW);
	void Use() { m_pbo.Use(); }
	void Nonuse() { m_pbo.Nonuse(); }

	ssPBO	m_pbo;
};
#endif

}
#endif
